<?php

namespace app\common\model\Posts;

use think\Model;

class Posts extends Model
{
    //设置当前模型对应的完整数据表名称
    protected $name = 'business_posts';

    //开启自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';

    //定义时间戳字段名
    protected $createTime = 'createtime';

    //关闭自动更新时间戳
    protected $updateTime = false;

    //开启过滤
    protected $field = true;

    protected $append = [
        'cleatetime_text', //创建时间
        'schoolid_text', //学校
        'thumbs_url', //图片地址
        'likes_text', //点赞个数
    ];

    //创建时间
    public function getCleatetimeTextAttr($value, $data)
    {
        $createtime = isset($data['createtime']) ? $data['createtime'] : '';
        if ($createtime) {
            return date('Y-m-d H:i', $createtime);
        } else {
            return '';
        }
    }

    //学校
    public function getSchoolidTextAttr($value, $data)
    {
        $schoolid = isset($data['schoolid']) ? $data['schoolid'] : '';

        return model('common/School/School')::where('id', $schoolid)->value('name');
    }

    //图片地址
    public function getThumbsUrlAttr($value, $data)
    {
        $thumbs = $data['thumbs'] ?? ''; // 使用空合并运算符简化代码

        if (empty($thumbs)) {
            return []; // 返回空数组而非空字符串，保持类型一致性
        }

        // 如果是数组，先转为字符串
        if (is_array($thumbs)) {
            $thumbs = implode(',', $thumbs);
        }

        // 将字符串拆分为数组并拼接完整 URL
        return array_map(function ($path) {
            return request()->domain() . $path;
        }, explode(',', $thumbs));
    }

    // 点赞个数
    public function getLikesTextAttr($value, $data)
    {
        $likes = $data['likes'] ?? '';

        // 如果 $likes 是数组，直接返回数组长度
        if (is_array($likes)) {
            return count($likes);
        }

        // 如果 $likes 是字符串且非空，拆分数组后返回长度
        if (!empty($likes)) {
            return count(explode(',', $likes));
        }

        // 其他情况返回 0
        return 0;
    }

    // 连表用户表
    public function user()
    {
        return $this->belongsTo('app\common\model\User\User','userid', 'id', [], 'LEFT')->setEagerlyType(0);
    }
}
